package datos;

import java.util.ArrayList;

public class Datos {
    
    private ArrayList<ArrayList<String>> lista;
    private String nombreClase;
    private String[] titulos;
    private ArrayList<ArrayList<String>> posiblesValores;
    
    public Datos(){
        lista = new ArrayList<ArrayList<String>>();
        nombreClase = "SinNombre";
        titulos = null;
    }

    public ArrayList<ArrayList<String>> getLista() {
        return lista;
    }

    public void setLista(ArrayList<ArrayList<String>> lista) {
        this.lista = lista;
        
        
        posiblesValores = new ArrayList<ArrayList<String>>();
        
        int cantColumnas = 0;
        if(lista.size() > 0 && lista.get(0).size() > 0)
            cantColumnas = lista.get(0).size();
        
        for (int i = 0; i < cantColumnas; i++){
            ArrayList<String> nuevo = new ArrayList<String>();
            posiblesValores.add(nuevo);
        }
        
        for (int i = 0; i < lista.size(); i++) {
            
            ArrayList<String> registro = lista.get(i);
            
            for (int j = 0; j < registro.size(); j++) {
                
                ArrayList regPosible = posiblesValores.get(j);
                
                String valor = registro.get(j);
                boolean encontrado = false;
                
                for (int k = 0; k < regPosible.size(); k++) {
                    if(regPosible.get(k).equals(valor)){
                        encontrado = true;
                        break;
                    }
                }
                
                if(!encontrado)
                    regPosible.add(valor);
            }
            
        }
        
        //pone los datos a minusculas y elimina las Ñ
        formatear();
    }

    public String[] getTitulos() {
        return titulos;
    }

    public void setTitulos(String[] titulos) {
        this.titulos = titulos;
    }

    public String getNombreClase() {
        return nombreClase;
    }

    public void setNombreClase(String nombreClase) {
        this.nombreClase = nombreClase;
    }

    public ArrayList<ArrayList<String>> getPosiblesValores() {
        return posiblesValores;
    }
    
    /**
     * Esta funcion pone todos los datos en minusculas
     */
    private void formatear(){
        for (int i = 0; i < posiblesValores.size(); i++) {
            ArrayList<String> registro = posiblesValores.get(i);
            for (int j = 0; j < registro.size(); j++) {
                String valor = registro.get(j).toLowerCase();
                registro.set(j, formatearString(valor));
            }
            
        }
    }
    
    private String formatearString(String valor){
        valor = valor.replace('ñ', 'n');
        valor = valor.replace('á', 'a');
        valor = valor.replace('é', 'e');
        valor = valor.replace('í', 'i');
        valor = valor.replace('ó', 'o');
        valor = valor.replace('ú', 'u');
        return valor;
    }
    
}
